Systems and Methods for Managing Data Associated with Computer Code

ABSTRACT

Methods and arrangements to manage comment data that is associated with computer executable code are provided. Comment data associated with a line or lines of executable code can be stored, and a tag can be assigned to the comment, data or the line(s) of code. When it is desired to locate, information about lines of code, tags allow for an improved way to search for the desired lines of code. Thus, in response to a user query for information, a search engine can locate a specific tag or groups of tags and display code and comments associated with the located tag(s).

CROSS-REFERENCES TO RELATED APPLICATIONS

Pursuant to 35 USC § 120, this continuation application claims priorityto and benefit of U.S. patent application Ser. No. 11/379,390, entitled“Systems and Methods for Managing Data Associated with Computer Code”,attorney docket number AUS920060145US1(4178), filed on Apr. 20, 2006,the disclosure of which is incorporated herein in its entirety for allpurposes.

FIELD

The present disclosure relates to the field of computers and moreparticularly, to methods and arrangements for managing data associatedwith lines of code in a computer program.

BACKGROUND

The popularity of computers continues to grow. In fact, computers havebecome very important tools for many individuals and man y businessesthroughout the world. One reason for such a proliferation in computerusage, is that computers can efficiently perform many tasks thatheretofore were performed manually by humans with a pencil and paper.For example, adding numbers, writing papers, tracking inventory,tracking important dates, and sending mail, can be preformed moreefficiently with the assistance of a computer.

However, each task requires a computer to execute at least one set ofinstructions. Accordingly, a significant amount of computer executableinstructions are commercially available to the public. These executableinstructions are referred to by many names including computer programs,computer code, program code, computer software, computer instructions,applications, or simply “code.” Typical computer programs are relativelycomplex and it is difficult to understand how code manipulates aprocessor of a computer during every step of a process. Often, millionsof hours are spent creating and improving such programs and a typicalcomputer program has thousands of lines of code.

Most computer programs have an initial release or publication, and thenwhen improvements are added to existing programs, a new version of thecomputer program is released. It is also rare for a new program to bedeveloped from “scratch” as programmers that develop new programs oftenborrow code from textbooks, templates or from some previously developedcode. A typical computer program will have numerous releases whereineach new release will provide an incremental improvement to thepreviously released version. New software generally must be compatiblewith previously released software, thus, large pieces of code in asoftware release are often borrowed from the previously released versionof the software.

Often, when a computer program needs improvements, new programmers areassigned the task, but the new programmers are often unfamiliar with theintricacies of the existing program. Additionally, when minor revisionsare required to existing code, novice programmers are often employed tomake such revisions. One major challenge that programmers face is tounderstand how specific functions within the existing software occur andwhen and where these specific functions occur. It is nearly impossiblefor a programmer to improve or modify a program if the programmer cannotlocate specific features of the code and understand how the codeinstructs the computer to perform. Further, knowing some history aboutthe development of certain aspects of the code can help a programmerunderstand the current arrangement of the code in the computer program.

Computer programming tools typically allow programmers to add “comments”to lines of code during construction of the code wherein the commentscan provide a “narration” of the code and log important details. Such anarration can make it easier for subsequent programmers to locate andunderstand features within the code. Generally, a programmer can addcomments at a “source code” level, or integrate comments into the sourcecode. Source code is a machine readable language level that can instructa processor of a computer to execute specific functions.

As stated above, comments can provide data that explains something abouta line of code, or about a block of code, and comments are often addedby a programmer in an effort to make the code more understandable forsubsequent programmers. For example, a comment can locate a start of afunctional feature in the program, can explain the feature provided bylines of code, can explain why the feature was added and can locate anend to a section of code that provides the feature. When a programmerfixes a problem he or she may add additional comments regarding what waslearned, how an improvement was made, why a line of code was added ormodified and what problems were fixed by the added line(s) of code.

Like many other sciences, programming has its own technical language and“slang” often becomes accepted terminology as the language evolves forthe particular science. Although comments can be written in “plainEnglish” to “educate” subsequent programmers, many programmers write inless than perfect English and programmers often utilize technical jargonin the comments. Thus, comments are often non-uniform and hard to searchwith a text search, making sections of code hard to locate and hard tounderstand.

Typically, during the programming procedure, source code is displayed toa user by a programming tool and comments can be added adjacent to linesof code. Specific syntax in the displayed program can separate ordelineate the comments from executable code. Generally, comments areintended to assist programmers in understanding something about the codeand when a computer executes the code, the computer will ignore thecomments that are integrated with the code.

Software development tools have been significantly improved in recentyears and many development tools now provide what is called anintegrated development environment or (IDE). The concept of an IDEcombines many tools that historically were separated entities. Forexample, an IDE can include a “browser type” graphical user interface,editors, compilers, auto-correction tools, and other very useful toolsthat can provide a single multifunctional software development tool.Some popular IDE's include Visual J++, VisualAge for C++ or Java, JavaWorkShop, Visual Café, Elipse and IBM Websphere Studio ApplicationDeveloper. Many programmers rely on the advantages provided by an IDE todevelop code.

Although these commercially available IDEs provide many desirablefeatures, IDEs still have many shortcomings. For example, IDEs and otherdevelopment tools only provide limited management features for thevoluminous, disorganized comments often found within source code. A“hodgepodge” of unusable programmer comments often occurs in code thathas undergone many years of development from many different programmersand many different programming groups. Numerous authors with individualstyles can cause serious non-uniformity in the comments because manyprogrammers utilize their own abbreviations and jargon when makingentries in the comments section. More specifically, lines of code thathave been developed over the years and released numerous times oftencontain so many comments that it is hard for a programmer to locate thedesired code.

Some development tools provide a simple text search tool to performtextual searches of the comments but these tools are often useless whenthe comments include jargon and have a tenuous connection to the Englishlanguage. In such a situation, creating search terms to initiate thetext search is not an intuitive process. In fact in this situation, mostprogrammers view the comments as useless clutter. Thus, in manycircumstances the available tools cannot locate desired materials, andprogrammers often cannot make effective use of the comments in acomputer program. Yet in mature code, comments can fill up significantamount of space on a display, “obscuring” the actual computer executablecode.

A programmer may have a specific question or want to find a specificfunction among the thousands of lines of code and thousands of comments.However, when comments lack any logical order, or are not coherent, thecomments will have limited usefulness. Although these comments may stillbe useful and salvageable if a proper comment data management tool wereavailable to manage such data.

SUMMARY OF THE INVENTION

A method of managing comment data that is associated with lines ofcomputer executable code is provided herein. Comment data can be linkedto the executable code. The comment data can be stored, and a tag can beassigned to the comment data to further classify, describe or provideinformation about the comment data. When it is desired to locate afeature or something in the code, or in the comments, tags can allow foran improved way to search for such a feature. Thus, in response to auser query, a search engine can locate a specific tag or groups ofrelated tags and display lines of code and comments associated with thelocated tag(s).

Such tags can provide descriptive attributes for lines of code and forthe comments. For example, tags can indicate a time, a date, or anaction performed, an author, a revision number, a release number, anevent, programmer contact information, a feature, a function, animportant location in the code, a functional break in the code, and pastor present syntax or execution problems in the code a defect, a personassigned to the defect, or person assigned to a portion or line of codeto name a few.

The tags can be user defined and can be abbreviated such that a singlecharacter in the comments can provide a selectable link to additionalinformation possibly stored in a database format. The tags can assist inclassifying and indexing the comment data without taking up asignificant amount of space on the display or creating “clutter” in thesource code. In other embodiments, instead of an abbreviation, a tag canbe a descriptive word. When the tag provides a selectable link, the tagcan act as a selectable button, and when the selectable button isselected by a user, additional data can be retrieved from a database anddisplayed to provide more in-depth, often useful data to the user.

Such a data management method allows voluminous, unorganized and evencryptic comment data integrated with source code to be easily managedsuch that the comment data can be organized to provide meaningfulinformation to an unfamiliar programmer or IDE user. The results of asearch for tags can be displayed as lines of computer readable code andcomment(s) with tags that are associated with the lines of code.

To create the tagged code or comments, a programmer can manually entertags to comments or the code. In one embodiment, the IDE or softwaredevelopment platform can automatically add tags to lines of computerreadable code responsive to the results of a specific user action. Forexample, when a user modifies a line of code, the dates, actions, names,and revisions numbers and their associated tags can be automaticallyentered into the comments by the IDE. In another embodiment an IDE canautomatically add tags to comments associated with the code. Forexample, responsive to the process of compiling or linking, an ancillaryprocess that monitors activities performed by the computer canauto-assign tags to the comment data.

Comment data entry can also be performed with the assistance of agraphical user interface. In such an embodiment, a pop-up window can beprovided by the software development platform such that a programmer canselect/assign a tag to a comment after viewing a list of tags in a menu.A logical association can be created between tags, such as between adate, an author, a release and a revision number. Such an associationcan be utilized to index data and form a relational database. Multipletags can be assigned to a single line of code or to a single commentdata entry.

When a programmer desires to locate code or comments, the user canactivate a “search pop-up window” and chose from a list of searchabletags or a combination of selectable tags or search criteria. Forexample, multiple search criteria can be utilized to provide an advancedmultiple criteria search for lines of codes or comments.

In another embodiment, an apparatus is provided to manage comment data.An association module can associate executable computer instructionswith comment data. The comment data can provide searchable attributesfor the comment data. A tagger can be connected to the associationmodule and the tagger can tag the attributes so that the attributes canbe classified and then effectively located during future searches. Theembodiment can also include a search engine to locate the executablecomputer instructions utilizing the attributes in response to a userquery. In addition, a graphical user interface can be provided that isadapted to receive user input, display user selectable buttons and todisplay search results. The apparatus can also be integrated with othersoftware development tools.

In another embodiment, a machine-accessible medium containinginstructions to manage comment data associated with computer executablecode is provided. The medium can instruct a computer to store at leastone line of computer executable code, tags and comment data in anintegrated program development application. The comment data can beassociated with the tag and the at least one line of computer executablecode. The comment data can provide information for, or describe anattribute of the line of computer executable code. A tag from a group oftags can be assigned to the comment data. Responsive to a search, tagscan be located and search results can be provided to the user.

BRIEF DESCRIPTION OF THE DRAWINGS

Advantages of the invention will become apparent upon reading thefollowing detailed description and upon reference to the accompanyingdrawings in which, like references may indicate similar elements:

FIG. 1 depicts a computer system that could be utilized to managecomment data in an integrated computer code development environment;

FIG. 2 illustrates a block diagram of an apparatus that can managecomment data;

FIG. 3 depicts an embodiment of a graphical user interface of a commentmanagement system in a programming environment; and

FIG. 4 illustrates a flowchart of an embodiment to manage comments in asoftware development system.

DETAILED DESCRIPTION OF EMBODIMENTS

The following is a detailed description of embodiments of the disclosuredepicted in the accompanying drawings. The embodiments are in suchdetail as to clearly communicate the disclosure. However, the amount ofdetail offered is not intended to limit the anticipated variations ofembodiments, but on the contrary, the intention is to cover allmodifications, equivalents, and alternatives falling within the spiritand scope of the present disclosure as defined by the appended claims.The detailed descriptions below are designed to make such embodimentsobvious to a person of ordinary skill in the art.

Generally speaking, methods and arrangements to manage comments toexecutable computer code with a software development tool are provided.Embodiments include transformations, code, state machines or other logicto sort and display comments within a software development platform.While specific embodiments will be described below with reference to aparticular database, development tools, or logic configurations, thoseof skill in the art will realize that embodiments of the presentdisclosure may advantageously be implemented with other substantiallyequivalent configurations.

Generally, when a programmer is given a task of writing or modifying acomputer program, he or she will utilize a software development tool.Historically, different software development tools were utilized duringdifferent steps of the development process. Recently, these tools havebeen integrated to create an integrated, development environment (IDE).One feature that has been traditionally provided with softwaredevelopment tools is the ability to integrate comments with computerexecutable code, commonly referred to as just “code.”

Comments allow a programmer, to “annotate” or narrate each line of codeor sections of code to assist subsequent programmers in understandingthe executable code. However, comments often become unusable and thereis no effective way to sort through the thousands of lines of code andcomments to find relevant information.

In accordance with the present disclosure a line of computer executablecode, comments associated with the fine of code and a tag can be storedutilizing an integrated program development tool. The code comment datacan contain information about a line or lines of code and can describean attribute of the line(s) of computer executable code. At least onetag from the plurality of tags can be associated with the code commentdata and the line of computer executable code. The code comment data canalso be linked to, or associated with, the line of computer executablecode. In response to a user query that can utilize one or more tags,search results can be located that are consistent with the user query.The search results can be provided as a list of selectable resultswherein selecting a link in the displayed selectable results canretrieve additional information.

Turning now to the drawings, FIG. 1 illustrates, in a block diagramformat, a processing device such as a personal computer system 100. Thepersonal computing system 100 could be utilized to operate an integrateddevelopment environment (IDE). Such an environment could execute anentire suite of computer programs that can assist a programmer indeveloping computer software. Although a personal computer platform thatcan be networked is described herein, workstations and a mainframeplatform or other operating systems, environments or platforms would notpart from the scope of the disclosure.

The computer system 100 is illustrated to include a central processingunit 110, which may be a conventional proprietary data processor,memory, including random access memory 112, read only memory 114, andinput/output adapter 122, a user interface adapter 120, a communicationsinterface adapter 124, and a multimedia controller 126.

The input/output (I/O) adapter 122 can be connected to, and control,disk drives 147, and removable storage devices 146, as well as otherstandard and proprietary I/O devices such as a printer (not shown). Theuser interface adapter 120 can be considered to be a specialized 1/0adapter. The adapter 120 as illustrated is connected to a mouse, andkeyboard 140. In addition, the user interface adapter 120 may beconnected to other devices capable of providing various types of usercontrol, such as touch screen devices, track balls etc. (not shown).

The communications interface adapter 124 can be connected to a bridge150 such as is associated with a local or a wide area network, and amodem 151. By connecting the system bus 102 to various communicationdevices, external access to information on a network can be achieved.The multimedia controller 126 will generally include a video graphicscontroller capable of displaying images upon the monitor 160, as well asproviding audio to external components (not illustrated).

A comment manager module 116 can be connected to system bus 102 and canprovide logic or instructions to facilitate management of tags andcomments associated with computer executable code. Generally, themethods described herein can be executed by, or provided by the computersystem 100. Central processing unit 110 can execute functions andprovide useful tools to a programmer during the development of acomputer program. One of the more specialized tools and operations thatthe system 100 can provide is management of comment data, possiblytagging comment data and searching for comment data. Thus, a system suchas system 100 could be utilized to execute the method described herein.

FIG. 2 depicts a block diagram of an embodiment of a computer system 200that includes comment manager components 222. The comment managercomponents 222 can function the same as, or similar to the commentmanager 116 illustrated in FIG. 1. The computer system 200 can include aprocessing unit 202, memory 212, code development tools 216, a userinterface 208, possibly embodied as a graphical user interface and adisplay 210. The code development tools 216 can be a suite of softwaredevelopment tools commonly bundled to form an integrated developmentenvironment. The comment manager components 220 can include a tagger204, a search engine 206, and an association module 218. In accordancewith the present disclosure, all of the abovementioned components can beinterconnected with a system bus 220.

Generally, during a programming procedure a programmer will entercomputer executable code and, at the appropriate time, a programmer canenter comments to describe features or attributes of the computerexecutable code. Association module 218 can associate the executablecomputer code with the comment data. In one embodiment, the comment datacan be stored in a file that is separate from a file that stores theexecutable code. In this configuration the comment data can be linked tothe executable code such that when a programmer requests to viewcomments, the comment data can be inserted into the computer code whendisplayed.

In operation, the graphical user interface 208 can be displayed on thedisplay 210 and a user, such as a programmer can utilize the codedevelopment tools 216 to create or develop computer executable code.When the user adds comments to the code, the association module 218 canassociate the comments with lines of the executable code. In additionthe tagger 204 can facilitate manual or automatic tagging of thecomments in the code. Generally, the tags can identify attributes of thecomments or provide classifications or additional information for thecomments and the code such that the attributes within the code and thecomments can be efficiently located during a search for information viatags by the search engine 206.

The association module 218 can also provide an indexing feature. Theassociation module 218 can facilitate the process of converting thecollection of comment data, tags and code into a relational databasesuch that the search engine 206 can locate relevant comment data with asimple search. The search engine 206 can also facilitate advanced searchtools that are menu driven via the user interface 208.

When a user desires to search for tags, comments or computer code theuser can manipulate selectable buttons on the user interface 208. Theresults of such searches or selections can be displayed on display 210via the user interface 208. A list of assignable and searchable tags canalso be displayed oil the display 210. To initiate a search for tags orfor comments associated with tags, the user can select tags that aredisplayed as selectable links or selectable buttons on the display 210.Such a user selection/action can facilitate the retrieval and display oflarge sections of code, tags, comments, definitions and other supportingdata. In one embodiment, a user query can be made that includes multiplesearch criteria such as a search for multiple tags associated with thecomment data. For example, a search for an author, a date and a revisionnumber can be made simultaneously to narrow or focus a search such thatthe search finds relevant code or comments.

In yet another embodiment, the computer can conduct a process oncomputer executable code (such as compiling) and the tagger 204 canautomatically add tags to the computer executable code responsive to theresults of such a process. Tags can also be assigned manually by a userutilizing the user interface 208. The components of the comment managerapparatus 200 can be implemented as hardware, software, or a hybridthereof.

FIG. 3, depicts an embodiment of a graphical user interface (GUI) 300that can be utilized to develop lines of code and can be utilized toenter comments and tags for the lines of code. The GUI 300 can alsoprovide comment data management capabilities including facilitation ofcomment tagging and comment searching. GUI 300 can have a searchsub-window 310, a tag sub-window 306, and a program code sub-window 308.Generally, a comment searching function can be facilitated by the searchsub-window 310, a comment tagging function can be facilitated by the tagsub-window 306 and programming can be facilitated by the program codesub-window 308.

As with many graphical user interfaces, the programmer can activate asub-window such as search sub-window 310 and tag sub-window 306 byplacing a cursor on a menu-bar and clicking a mouse button to activatesuch a window or sub-window. Once a sub-window, such as program codesub-window 308, is displayed or “popped-up”, a user can select a featurefacilitated by the sub-window or activate a function facilitated by thesub-window. For example, if the user wants to write code he or she wouldplace the cursor in the program code sub-window 308 and beginprogramming by entering code. Program languages such as C, C++ and Java,to name a few, each have their own syntax which is analogous to theprecision grammar requirements present in different languages. The GUI300 illustrated, provides a Java programming environment and the linesof code in the program code sub-window 308 provide a small section ofcode of an entire computer program that could be executed by a processorof a computer. Such a programming environment is merely an example, asnearly any programming language and nearly all programming tools couldutilize the teachings provided herein.

In a Java environment, two back slashes 312 are entered as the firstcharacters on a line in the code section to indicate or delineate acomment. Thus, the computer executing the code will ignore thecharacters that follow the two back slashes 312. Accordingly, the textstarting with, “Converts the time which is in millisec . . . ” is acomment provided by a programmer to explain the subsequent section ofcode and tag “FD” 313 provides a searchable attribute for the commentwherein FD an be an abbreviation for “Functional Description.” Forexample, a search such as “FD converts time” would efficiently locatethe abovementioned comment.

Tags can be placed in areas of the program code sub-window 308 that aremarked for comments. However, different ways to place or incorporatetags into the code would not part from the scope of the presentdisclosure. For example, different programming tools can abbreviate,locate and identify comments differently, possibly outside of thecomments section without parting from the teachings of the presentdisclosure. Tags can indicate an attribute of a line of code, provideadditional information about the code or further classify a comment fora line or lines of code. The tag selection sub-window 306 can beactivated by selecting a selectable “tags” button 322 from a menu barand when the tag selection sub-window 306 is pulled -down, a list oftags with selectable boxes can be displayed to a user. The user couldalso create custom tags and enter the custom tags into the menu of thetag selection sub-window 306 as desired.

When a user desires to add tags to comments or to portions of code theuser could “check boxes,” associated with an addable tag by placing acursor in the box and depressing a mouse button. For example, placing acheck or an “X” in box 324 would indicate that the user wants to placean “Author” tag in the comments section of program code sub-window 308.Such an operation would be considered a semi-automatic way to add tagsto comments or code. After box 324 is checked and the cursor is placedin an appropriate location in the program code sub-window the Applybutton 326 could be activated to complete the tag assignment procedure.

Also, a default could be set such that the system automatically addsspecific tags in certain circumstances. For example a date and authortag entry could be automatically placed when a modification to the codeis made by a particular author on a particular date. Auto-assigningcould also occur based on a processing unit recognizing keyword in acomment or in the computer executable code. For example, the keyword“converts” in the comments could activate an auto assignment of a FDtag, (i.e. functional description tag) by an IDE tool. Many otherautomated tagging features could also be provided.

The example illustrated utilizes abbreviations to indicate tags in thecomments in an effort to minimize the space required on the screen toimplement tags, however tags could be complete words or completesentences. Descriptions of possible abbreviations that can be utilizedfor tags are described in the tag sub-window 306.

In the program code sub-window 308 illustrated, FD 313, A 318, FE 316,and RLN 304 have been placed in the comments section. The tags 313 318316 and 304 can be selected from the tag selection sub-window 306 andentered into a comments section of the program code sub-window 308 toidentify various attributes of the lines of code or various attributesof comments. More particularly, tag FD 312 can indicate that the text inthe area proximate to the tag FD 312 includes a functional descriptionfor lines of code that perform a specific function. In the illustratedexample, tag FD 313 indicates that a comment exists that locates linesof code that convert units of time.

Tag A 318 can indicate an author of a specific line of code andproximate to the tag A 318, are the initials JBC possibly indicatingthat the author of the line of code was Jon B. Charles. Additionally,information such as contact information for Jon or alternately who isresponsible for this section of code could be stored in a look-up tablein memory. Thus, many different types of supporting information for thecomments or tags could be stored in a relational database format andcould be linked to the tags.

Tag RLN 304 provides that the illustrated fine of code was released withrelease number 204 as indicated by the numbers subsequent to the tag RLN304. As with the author example above, the indicator RLN 304 could alsoprovide a selectable link wherein selecting the tag/link RLN 304 coulddisplay additional information or additional even additional links tothe user.

When a user desires to place tags into the code or into the comments,tag window 306 can be activated and selectable buttons in the tagsub-window can allow a programmer to select tags for insertion into thecomments. Thus the tag insertion/assignment process can be“semi-automatic.” In one embodiment the tag insertion process couldoperate similar to the symbol insertion process provided by theMicrosoft Windows Word® operating system. A few tags and abbreviationsfor tags are listed in the tag sub-window 306, however many tags couldbe utilized. More specifically tags could provide information such as:

-   -   an indicator of when an event occurred such as a date the line        of code was entered;    -   an indictor that a line of code was deleted or added;    -   an indicator that a portion of the code or a line of code was        added or deleted;    -   an author who originated the code;    -   an author who modified the code;    -   a revision number;    -   a release number;    -   a release date;    -   an event;    -   a computer identifier indicating the computer that was utilized        to modify the code;    -   a start or end of a group of code that performs a specific        function;    -   contact information indicating who is or was responsible for        maintaining the line of code;    -   an important location in the code;    -   a functional description of the code;    -   the location of further documentation, possibly an architecture        or design document;    -   history data about the function of the code (how it has been        changed and why); and    -   a project number, project library or project package to name a        few.

When it is desired to search the code or the comments, the searchsub-window 310 can be activated or pulled down. Search sub-window 310can also provide user selectable buttons such as “Author”, “Date”,“Function” etc. that allows a user to choose search criteria forsearching comments and programming code.

In a particular embodiment tags 312 313 318 and 304 in the programmingcode sub-window 308 can act as selectable buttons or selectable links.Thus, selection of a tag in the programming code sub-window 308 couldactivate a pop-up window that allows for a text entry to narrow thesearch. For example, if search by “Author” has been selected, a pop-upwindow can appear that allows text to be entered that can, at leastpartially, represent a name. Responsive to this text entry, the searchengine can search for text proximate to “Author tags” in the code or inthe comments.

In addition, multiple search criteria can be selected in the search typesub-window 310 by checking multiple boxes in the search sub-window 310and using a text entry window, (not shown) a user can enter text to beincluded in the search criteria. In another embodiment, comments couldbe entered under a project tag. Thus, a user could search for lines ofcode that are associated with a specific project library where theproject may be assigned a title. For example, a project may beundertaken to add a feature to the code and the additional changes anddeletions related to the specific feature can be placed in a projectlibrary such that a user can see what changes were made for a specificproject by searching by a project tag.

After the desired search criteria are selected and entered by a user byplacing checks in selection boxes, then a search button 305 can beselected to activate a search that will locate comment data associatedwith a text entry and selected tags. For example, an author, a datelimitation, and a release number can be selected by a user to provide anarrow search for lines of code that have the specific combination oftext and tags. It can be appreciated that a more advanced search can beconducted by defining the author search to look for the characters “Jo”in the author field and to look for revision dates between 2002 and 2003in the revision field.

In one embodiment, the IDE can include executable features such acompiler or a linker. When the IDE compiles the code the IDE mayauto-correct syntax errors in the newly compiled code. When the compilercorrects lines of code, the compiler may automatically insert tags inthe code to identify where in the code the compiler has taken theliberty to make changes or “auto-correct” the code. However, existingcompilers would not have to be modified as the IDE could utilize resultsof a compiling process to add tags to the compiled code based on theoutput provided by the compiler. In other embodiments, in response tospecific processes, a tagger within the IDE can automatically inserttags without user intervention. For example, when a user types in a lineof code the IDE can automatically insert tags such as the date, time,editor, and a specific activity performed by the user.

Many other tags could be semi-automatically or automatically insertedinto the code or into the comments by the IDE in response to userinteraction or by a tool within the IDE. For example, a compiler coulddetect a defect, or a potential defect in the code and place a number orother identifier in the code, assign a user who, is responsible for thedefect and send a notification to the assigned user. In one embodimentwhen a user opens the IDE and the user has been assigned a defect, theuser can be prompted or given the option to work on the defect and canbe presented with the code that has the defect. The IDE could also allowdifferent edit capabilities such as a read only status for the commentsand could allow only the user who entered the comments to delete ormodify existing comments. Each change in the code can have specificinformation embedded, for example the author, the time and date and thedefect number being addresses. In yet another embodiment, logicalrelationships, linking of data, or associations between tags can becreated to form a relational database that contains tags and comments.

Referring now to FIG. 4, a flow diagram 400 that provides comment datamanagement is provided. After the process starts, it can proceed toblock 404 where, as illustrated, comment data, possibly descriptivedata, associated with a line of computer readable code can be stored. Asillustrated in block 406, at least one tag from a list of tags can beassigned to the comment data. As illustrated by block 408, a query canbe created that facilitates a search. The search can be for one tag,multiple tags or for data associated with a tag. Such a search canlocate and retrieve lines of code and comments that are consistent withthe search criteria.

As illustrated by decision block 410, it can be determined if tags andcode can be located responsive to the search. When no tags, comments orcode can be located that are consistent with the search query, theprocess can revert back to block 408 where another query can berequested from the user. If tags, code, or comments are located inresponse to the query, the tags, code, or comments that are retrievedcan be displayed as illustrated in block 412 and the process can endthereafter.

Another embodiment of the invention is implemented as a program productfor implementing comment data management systems and methods describedwith reference to FIGS. 1-4. The program(s) of the program productdefines functions of the embodiments (including the methods describedherein) and can be contained on a variety of data and/or signal-bearingmedia. Illustrative data and/or signal-bearing media include, but arenot limited to: (i) information permanently stored on non-writablestorage media (e.g., read-only memory devices within a computer such asCD-ROM disks readable by a CD-ROM drive); (ii) alterable informationstored on writable storage media (e.g., floppy disks within a diskettedrive or hard-disk drive); and (iii) information conveyed to a computerby a communications medium, such as through a computer or telephonenetwork, including wireless communications. The latter embodimentspecifically includes information downloaded from the Internet and othernetworks. Such data and/or signal-bearing media, when carryingcomputer-readable instructions that direct the functions of the presentinvention, represent embodiments of the present invention.

In general, the routines executed to implement the embodiments of thedisclosure, may be part of an operating system or a specificapplication, component, program, module, object, or sequence ofinstructions. The computer program of the present invention typically iscomprised of a multitude of instructions that will be translated by acomputer into a machine-readable format and hence executableinstructions. Also, programs are comprised of variables and datastructures that either reside locally to the program or are found inmemory or on storage devices. In addition, various programs describedhereinafter may be identified based upon the application for which theyare implemented in a specific embodiment of the invention. However, itshould be appreciated that any particular program nomenclature thatfollows is used merely for convenience, and thus the disclosure shouldnot be limited to use solely in any specific application identifiedand/or implied by such nomenclature.

It will be apparent to those skilled in the art having the benefit ofthis disclosure that the present invention contemplates methods andarrangements to manage comments in a software development environment.It is understood that the form of the invention shown and described inthe detailed description and the drawings are to be taken merely asexamples. It is intended that the following claims be interpretedbroadly to embrace all the variations of the example embodimentsdisclosed.

Although the present invention and some of its advantages have beendescribed in detail for some embodiments, it should be understood thatvarious changes, substitutions and alterations can be made hereinwithout departing from the spirit and scope of the invention as definedby the appended claims. Although an embodiment of the invention mayachieve multiple objectives, not every embodiment falling within thescope of the attached claims will achieve every objective. Moreover, thescope of the present application is not intended to be limited to theparticular embodiments of the process, machine, manufacture, andcomposition of matter, means, methods and steps described in thespecification. As one of ordinary skill in the art will readilyappreciate from the disclosure of the present invention, processes,machines, manufacture, compositions of matter, means, methods, or steps,presently existing or later to be developed that perform substantiallythe same function or achieve substantially the same result as thecorresponding embodiments described herein may be utilized according tothe present invention. Accordingly, the appended claims are intended toinclude within their scope such processes, machines, manufacture,compositions of matter, means, methods, or steps.

1. A method to facilitate comment data operations in a programmingenvironment comprising: storing at least one line of computer executablecode in a program development application; storing code comment data;associating the comment data with the at least one line of computerexecutable code, the code comment data containing information related tothe at least one line of computer executable code; assigning at leastone tag from the plurality of tags to the code comment data; searchingfor lines of code that have a specific feature; and locating the linesof executable code with the specific feature utilizing the at least onetag in response to the search.
 2. The method of claim 1 furthercomprising displaying the lines of executable code with the specificfeature.
 3. The method of claim 1 further comprising accepting a userquery having multiple search criteria and displaying search results inresponse to the user query.
 4. The method of claim 1 further comprisingindexing the stored comment data utilizing the at least one tag.
 5. Themethod of claim 1 further comprising monitoring a process beingperformed on the at least one line of computer executable code or thestored comment data and automatically adding a tag to the at least oneline of computer executable code responsive to detecting an activityperformed by the process.
 6. The method of claim 1 wherein assigningcomprises selecting at least one tag assignable to the stored commentdata, wherein the selecting is performed via a graphical user interface.7. The method of clam 1 wherein displaying comprises displayingselectable links that when activated can retrieve additional data. 8.The method of claim 1 wherein the query comprises displaying searchcriteria tags and accepting a user selection of the displayed searchcriteria to direct a search.
 9. The method of claim 1 wherein assigningthe at least one tag comprises auto-assigning the at least one tag tothe at least one line of computer executable code based on an activityof a user.
 10. The method of claim 1 wherein the assigning the at leastone tag comprises assigning based on recognition of a keyword in one ofthe comments or the at least one line of computer executable code. 11.An apparatus to manage comment data in a programming environmentcomprising: an association module to associate executable computerinstructions with comment data, the comment data providing informationabout the executable code; a tagger to place at least one tag on thecomment data responsive to the information; and a search engine tosearch for the at least one tag and to locate the information related tothe executable computer instructions in response to a search query. 12.The apparatus as in claim 11 further comprising a display to display thecomment data and the at least on line of computer executable code. 13.The apparatus as in claim 12 further comprising a graphical userinterface adapted to receive user input and to configure the displaywith the located information.
 14. The apparatus as in claim 11 furthercomprising an integrated development tool coupled to the tagger andconfigured to auto tag comments in response to at least one processprovided by tools within a suite of development tools.
 15. Amachine-accessible medium containing instructions to manage comment dataassociated with computer executable code, said machine to performoperations comprising: storing at least one line of computer executablecode in an integrated program development application; storing codecomment data; associating the comment data with the at least one line ofcomputer executable code, the code comment data providing informationrelated to the at least one line of computer executable code; assigningat least one tag from the plurality of tags to the code comment data;and locating search results regarding features of the at least one lineof executable code utilizing the at least one tag in response to aquery.
 16. The machine-accessible medium of claim 15 further comprisingdisplaying at least one line of computer executable code associated withthe located at least one tag.
 17. The machine-accessible medium of claim15 further comprising displaying the stored comment data associated withthe located at least one tag.
 18. The machine-accessible medium of claim15 further comprising processing the at least one line of computerexecutable code and automatically adding a tag to the comment dataresponsive to results of the processing
 19. The machine-accessiblemedium of claim 15 wherein the at least one tag comprises one of adeletion, an addition, an author, a revision number, a release number,an event, contact information, a start of a block of code, an end of ablock of code and a functional description.
 20. The machine-accessiblemedium of claim 15 wherein links are created between two tags such thata relational database can be implemented.